package model

import (
    "fmt"

    "database/sql"
	"ginframe/db"
)

var (
    dbConn *sql.DB
)

func init () {
	dbConn  = db.DbConnect()
}

// 日志数据的结构体（确保和数据库中的结构一致）
type Mixlog struct {
    Id         int     `json:"id" form:"id"`
    Path       string  `json:"path" form:"path"`
    Method     string  `json:"method" form:"method"`
    Status     string  `json:"status" form:"status"`
    Ip         string  `json:"ip" form:"ip"`
    Created    string  `json:"created" form:"created"`
    Updated    string  `json:"updated" form:"updated"`
}


/**
* 查询 日志列表
*/
func GetMixlogList() *[]Mixlog {
    var mixlog Mixlog
    // 定义一个切片数据，存放log数据
    logList := make([]Mixlog, 0)
    rows, err := dbConn.Query("select * from mix_log order by created desc limit 5")
    defer rows.Close() // 即时关闭
    if err != nil {
        fmt.Println(err)
    }
    i := 0
    for rows.Next() { //循环显示所有的数据
        // 扫描每一行的结果并赋值到一个对象中
        rows.Scan(&mixlog.Id, &mixlog.Path, &mixlog.Method, &mixlog.Status, &mixlog.Ip, &mixlog.Created, &mixlog.Updated)
        // fmt.Println(mixlog)
        logList = append(logList, mixlog)
        i++
    }
    // fmt.Println(rows)
    return &logList
}

/**
* 插入 日志记录
*/
func InsertMixlog (m Mixlog) {
	sqlStr := "insert into mix_log(path, method, status, ip) values (?,?,?,?)"
	_, err := dbConn.Exec(sqlStr, m.Path, m.Method, m.Status, m.Ip)
	if err != nil {
		fmt.Printf("insert failed, err:%v\n", err)
		return
	}
}
